const app = getApp()

Page({
  async getNickName(e) {
    this.setData({
      nickName: e.detail.value,
    })
    const { code } = await wx.http.put('/userInfo', {
      nickName: e.detail.value,
    })
    if (code !== 10000) return wx.utils.toast('更新昵称失败')
    // 修改昵称成功了 >> app实例上更新一份昵称数据 >> 我的页面的昵称数据也要发生变化
    app.userProfile.nickName = e.detail.value
    const pages = getCurrentPages()
    // 把我的页面的昵称信息进行更新
    pages[0].setData({
      nickName: e.detail.value,
    })
  },
  onShow() {
    // 页面切换回来的时候，重新获取实例上面的数据进行赋值
    this.setData({
      nickName: app.userProfile?.nickName,
      avatar: app.userProfile?.avatar,
    })
  },
  data: {
    nickName: '',
    avatar: '',
  },
  updateAvatar(url) {
    // 进行头像的上传 >> 自己的服务器
    wx.uploadFile({
      filePath: url,
      name: 'file',
      url: wx.http.baseURL + '/upload', // 接口地址
      header: {
        Authorization: 'Bearer ' + getApp().token,
      },
      formData: { type: 'avatar' },
      success: (res) => {
        // console.log(res)
        const results = JSON.parse(res.data)
        if (results.code !== 10000) return wx.utils.toast('上传失败')
        // 更新当前页面
        this.setData({
          avatar: results.data.url,
        })
        // 更新上一个页面
        const page = getCurrentPages()[0]
        page.setData({
          avatar: results.data.url,
        })
        // 实例上面更新一份
        app.userProfile.avatar = results.data.url
      },
    })
  },
  getAvatar(e) {
    // 获取到用户选择的头像的本地连接
    this.updateAvatar(e.detail.avatarUrl)
  },
})

// 思路需求：
// 1、获取到用户信息存储到应用实例
// 2、更新昵称的时候，更新应用实例的昵称信息 / 更新上一个页面栈的昵称信息
// 3、修改信息界面默认从app实例获取用户信息数据进行展示
